/*
 * @Description: axios封装
 * @Author: ligy
 * @Date: 2022-03-20 23:37:39
 * @LastEditTime: 2022-03-21 10:58:59
 */
import axios from 'axios'
// JSONBig 可以处理数据中心超出JavaScript安全整数范围的问题
import JSONBig from 'json-bigint'
import { getSessionItem } from '../utils/sessionStorage';
const request = axios.create({
  // baseURL: 'http://ttapi.research.itcast.cn' // 接口的基准路径
  baseURL: 'http://127.0.0.1:8888/api/private/v1',
  // 自定义后端返回的原始数据
  // data: 后端返回的原始数据,说白了就是JSON格式的字符串
  transformResponse: [
    function (data) {
      try {
        return JSONBig.parse(data)
      } catch (error) {
        return data
      }
    }
  ]
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 任何请求都会经过这里
    const token = getSessionItem('token')
    if(token){
      config.headers.Authorization = token
    }
    // 这里必须返回config,否则请求就停在这里出不去了
    return config
  },
  error => {
    // 如果请求出错了,(请求还没有发出去)会进入这里
    return Promise.error(error)
  }
)
// 响应拦截器
request.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return response.data
    } else {
      return Promise.reject(error)
    }
  },
  error => {
    this.$message({
      message: error.statusText,
      type: 'error',
      duration: 5 * 1000
    })
  }
)
export default request
